package com.intretech.tj.light;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

public enum State {
    RED(1, "红灯"),
    GREEN(2, "绿灯"),
    YELLOW(3, "黄灯");


    public final int value;
    @Getter
    public final String chinese;

    State(int value, String chinese) {
        this.value = value;
        this.chinese = chinese;
    }

    @JsonValue
    public int getValue() {
        return value;
    }

    /**
     * 根据整数值获取对应的 State 枚举。
     * 解决 JSON 反序列化时将整数映射到枚举的问题。
     *
     * @param value 状态对应的整数值
     * @return 对应的 State 枚举，如果找不到则抛出 IllegalArgumentException
     */
    @JsonCreator // 当 Jackson 反序列化 JSON 时，会尝试调用此方法来创建枚举实例
    public static State getState(int value) {
        for (State state : State.values()) {
            if (state.value == value) {
                return state;
            }
        }
        throw new IllegalArgumentException("无效的红绿灯状态值: " + value + "，无法匹配到任何已知状态。");
    }
}
